/**
 * Project litesql++
 */


#include "content_values.h"
#include "utils.h"

using std::make_pair;

/**
 * ContentValues implementation
 */

ContentValues::ContentValues() { }

ContentValues::~ContentValues() { }

/**
 * @param key
 * @param value
 * @return void
 */
void ContentValues::PutBool(const string& key, const bool& value) {
    values_[key] = to_string(value);
}

/**
 * @param key
 * @param value
 * @return void
 */
void ContentValues::PutInt32(const string& key, const int32_t& value) {
    values_[key] = to_string(value);
}

/**
 * @param key
 * @param value
 * @return void
 */
void ContentValues::PutInt64(const string& key, const int64_t& value) {
    values_[key] = to_string(value);
}

/**
 * @param key
 * @param value
 * @return void
 */
void ContentValues::PutText(const string& key, const string& value) {
    values_[key] = value;
}

/**
 * @param key
 * @return void
 */
void ContentValues::PutNULL(const string& key) {
    values_[key] = "NULL";
}

/**
 * @return void
 */
void ContentValues::ClearValues() {
    values_.clear();
}

/**
 * @return const int
 */
const int ContentValues::ValuesCount() {
    return values_.size();
}

/**
 * @return const string
 */
const string ContentValues::ValuesAsSQLInsertString() const {
    string column_names;
    string values;
    map<string, string>::const_iterator it;
    for (it = values_.cbegin(); it != values_.cend(); ++it) {
        column_names += it->first + ", ";
        values += it->second + ", ";
    }
    column_names = column_names.substr(0, column_names.length() - 2);
    values = values.substr(0, values.length() - 2);

    return "(" + column_names + ")" + "VALUES" + "(" + values + ")";
}

/**
 * @return const string
 */
const string ContentValues::ValuesAsSQLUpdateString() const {
    string values;
    map<string, string>::const_iterator it;

    for (it = values_.cbegin(); it != values_.cend(); ++it) {
        values += it->first + " = " + it->second + ", ";
    }

    values = values.substr(0, values.length() - 2);

    return values;
}





